package com.shishuo.cdn.util;


import java.io.IOException;
import java.io.InputStream;
import java.util.Map;

import org.apache.commons.httpclient.Cookie;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.SimpleHttpConnectionManager;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.methods.RequestEntity;
import org.apache.commons.httpclient.methods.StringRequestEntity;


/**   
* 描述：http读文件   
* 创建人：YangJ  邮箱:yangjie@sxw100.com   
* 创建时间：2015年5月23日 下午11:42:54   
* 修改备注：   
* @version    
*    
*/ 
public class HttpRead {
	//超时时间
//	private static String connectTimeOut;
	//返回数据编码格式
//	private static String encoding;
	//connectionmanager管理httpclientconnection时是否关闭连接  
//    private static boolean alwaysClose = false; 
    //模拟浏览器标识（UA）
//    private static String UA;
    //创建客户端
	private final static HttpClient client=new HttpClient(new SimpleHttpConnectionManager());
	
//	//http get 请求
//	public String doGet(String protocolAndHost,String uri){
//		GetMethod gm=new GetMethod(protocolAndHost.trim()+uri.trim());
////		gm.setRequestHeader(header);
////		gm.setRequestHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 1.7; .NET CLR 1.1.4322; CIBA; .NET CLR 2.0.50727)");
//		String responseString=executeMethod(gm);
//		return "";
//	}
	private static final String RESULT_STRING="RESULT_STRING";//返回文本标识
	private static final String RESULT_STREAM="RESULT_STREAM";//返回输入流标识
	
	/**   
	* 描述：读html文本
	* 创建人：YangJ  邮箱:yangjie@sxw100.com   
	* 创建时间：2015年5月24日 下午2:46:52   
	* 修改备注：   
	* @version    
	*    
	*/ 
	public static String readHtml(String protocolAndHost,String uri){
		GetMethod gm=new GetMethod(protocolAndHost.trim()+uri.trim());
		Object obj=executeMethod(gm,RESULT_STRING);
			return obj==null?null:(String)obj;
	}
	/**   
	* 描述：读html文本 by url   
	* 创建人：YangJ  邮箱:yangjie@sxw100.com   
	* 创建时间：2015年6月1日 下午8:43:10   
	* 修改备注：   
	* @version    
	*    
	*/ 
	public static String readHtmlByGet(String url){
		GetMethod gm=new GetMethod(url.trim());
		Object obj=executeMethod(gm,RESULT_STRING);
			return obj==null?null:(String)obj;
	}
	/**   
	* 描述：读html文本 by    
	* 创建人：YangJ  邮箱:yangjie@sxw100.com   
	* 创建时间：2015年7月28日 下午2:12:51   
	* 修改备注：   
	* @version    
	*    
	*/ 
	public static String readHtmlByPost(String url,Map<String,String> params){
		PostMethod pm=new PostMethod(url);
		for(String one:params.keySet())
		{
			pm.addParameter(one, params.get(one));
		}
		Object obj=executeMethod(pm,RESULT_STRING);
		return obj==null?null:(String)obj;
	}
	//发送post方法 传递json数据
	public static String readHtmlByPostUseJson(String url,String json){
		System.out.println("---------->请求参数地址："+url +"         json:"+json);
		System.out.println("---------->请求参数地址："+url +"         json:"+json);
		System.out.println("---------->请求参数地址："+url +"         json:"+json);
		System.out.println("---------->请求参数地址："+url +"         json:"+json);
		System.out.println("---------->请求参数地址："+url +"         json:"+json);
		PostMethod pm=new PostMethod(url);
		RequestEntity requestEntity = new StringRequestEntity(json);  
		pm.setRequestEntity(requestEntity);
		Object obj=executeMethod(pm,RESULT_STRING);
		return obj==null?null:(String)obj;
	}
	/**   
	* 描述：  http读输入流 
	* 创建人：YangJ  邮箱:yangjie@sxw100.com   
	* 创建时间：2015年5月24日 下午3:17:57   
	* 修改备注：   
	* @version    
	*    
	*/ 
	public static InputStream readInputStream(String protocolAndHost,String uri){
		GetMethod gm=new GetMethod(protocolAndHost.trim()+uri.trim());
		Object obj=executeMethod(gm,RESULT_STREAM);
		return obj==null?null:(InputStream)obj;
	}
	
	/**   
	* 描述：访问方法   
	* 创建人：YangJ  邮箱:yangjie@sxw100.com   
	* 创建时间：2015年5月24日 上午12:09:03   
	* 修改备注：   
	* @version    
	*    
	*/ 
	private static Object executeMethod(HttpMethod method,String resultType){
		
		try {
//			Header header = new Header();
//			Header header= new Header("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 1.7; .NET CLR 1.1.4322; CIBA; .NET CLR 2.0.50727)");
//			method.setRequestHeader((Header) header);
			if(RESULT_STRING.equals(resultType))
			{
					client.executeMethod(method);
					String html=method.getResponseBodyAsString();
//					Cookie cookies[]=client.getState().getCookies();s
				return (Object)(html);
			}
			if(RESULT_STREAM.equals(resultType))
				return (Object)method.getResponseBodyAsStream();
		} catch (HttpException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return null;
		
	}
	
	
	public static void main(String[] args) {
//		System.out.println(	readHtml("http://119.75.217.56"));
		HttpRequestProxy.doGet("http://1.202.135.4:2333/api/disk_usage/?name='123'", "utf-8");
		System.out.println(	readHtmlByGet("http://1.202.135.4:2333/api/disk_usage/?name='123'"));
}
}